﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DAL
{
    public partial class  ComparativoItemSelecPrv
    {
      

        public decimal getMontoUsoTotalFromOCompraItem(dbGestionDataContext _db, 
            bool incluyeIGV)
        {
            decimal result = 0;

            var q = (from i in _db.OrdenCompraItems
                     where i.idComparativoItemSelecPrv == this.idInternal &
                       i.bitActivo == true
                     select i);
           
            // dependiendo de la obra si incluye o no IGV

            if (q.Count() > 0)
            {
                if (incluyeIGV)
                {
                result = q.Sum(p => (p.subMontoIGV)).Value;
                }else
                {
                    result = q.Sum(p => (p.subMonto)).Value;
                }
                
            }

            return Math.Round(result, 4);
        }

        public decimal getCantidadUsoTotalFromOCompraItem(dbGestionDataContext _db)
        {
            decimal result = 0;

            var q = (from i in _db.OrdenCompraItems
                     where i.idComparativoItemSelecPrv == this.idInternal &
                     i.bitActivo==true
                     select i);

            if (q.Count() > 0)
            {
                result = q.Sum(p => p.cantidad).Value;
            }

            return result;
        }





        public int AddCItemSelecProv(dbGestionDataContext _db,
                                        int idcomparativoItem,
                                        int idcomparativoProveedor,
                                        decimal cantidad,
                                        decimal  precio,
                                        decimal total)

                {

                    this.idComparativoItem = idcomparativoItem;
                    this.idComparativoProv = idcomparativoProveedor;
                    this.cantidad = cantidad;
                    this.precio = precio;
                    this.total = total;
                    this.cantidadUso = 0;
                    this.totalUso = 0;
                    this.fechaCre = DateTime.Now;
            
            
                    _db.ComparativoItemSelecPrv.InsertOnSubmit(this);
                    _db.SubmitChanges();
                    return this.idInternal;

                }

        public void updateUso(dbGestionDataContext _db, bool IncluyeIGV)
        {
            this.cantidadUso = this.getCantidadUsoTotalFromOCompraItem(_db);
            this.totalUso = this.getMontoUsoTotalFromOCompraItem(_db, IncluyeIGV);
            _db.SubmitChanges();
        }
    }
}
